2.1硬件环境构建
2.1.1主机与目标板结合的交叉开发模式
开发PC机上的软件时,可以直接在PC机上编辑、编译、调试软件,最终发布的软件也是在PC机上运行。对于物联网OpenWrt开发,最初的嵌入式设备是一个空白的系统,需要通过主机为它构建基本的软件系统,并烧写到设备中;另外,嵌入式设备的资源并不足以用来开发软件。所以需要用到交叉开发模式:在主机上编辑、编译软件,然后在目标板上运行、验证程序。对于MT7621等开发板,进行物联网OpenWrt开发时一般可以分为以下3个步骤。
(1)在主机上编译U-boot,然后通过SPIFlash烧写器烧入单板。
通过SPIFlash烧写器烧写程序的效率非常低,而且还需要取下Flash芯片,它适用于烧写空白单板。为方便开发,通常选用具有串口传输、网络传输、烧写Flash功能的U-boot,它可以快速地从主机获取可执行代码,然后烧入单板。
该U-boot在开发板生产时,已经由工厂烧入到了SPIFlash中。特别强调,在做物联网openwrt开发时,一般不建议大家自己开发、重新烧写U-boot!否则,一不小心,开发板就会变成砖头的哦。
(2)在主机上编译OpenWrt,通过U-boot烧入单板或直接启动。一个可以在单板上运行的OpenWrt是进行后续开发的基础。
(3)在主机上编译各类应用程序,经过验证后烧入单板。
烧写、启动U-boot后,就可以通过U-boot的各类选项来下载、烧写、运行程序了。启动Linux后,也是通过执行各种命令来启动应用程序的。怎么输入这些命令、查看命令运行的结果呢?一般通过串口来进行输入输出。所以交叉开发模式中,主机与目标板通常需要2种连接:串口、网络。
2.1.2硬件要求
1.主机要求
一般的PC机就可以用来进行物联网OpenWrt开发,它应该满足以下要求。
①有一个USB口;
②支持网络;
③至少20GB的硬盘。
2.目标板要求
由于后面会设计到大量的教程、大量的应用的移植,所以建议大家用512MB的内存、32MBFlash。所谓的硬件开发环境搭建很简单,将主机与目标板通过串口线(直接用miniUSB线连接主机和目标板即可)、网线(接单板上的任意网口)连接起来,将各类设备连接到目标板上去即可。
2.2软件环境构建
2.2.1在Windows上安装虚拟机
本书基于Ubuntu16.04进行开发,它是一个很容易安装和使用的Linux发行版。光盘映象文件的下载地址为http://releases.ubuntu.com/。
安装方法有好几种:将映像文件刻录成光盘后安装,通过网络安装等。对于不熟悉Linux的读者,可以通过VMware虚拟机软件使用映象文件安装,这样可以在Windows中使用Linux──反过来也是可以的,安装Linux后,再使用VMware安装windows,这样就可以在Linux中同时使用Windows了。
这几种安装方法基本相同,下面介绍在Windows中通过VMware来安装Linux的方法。不管是哪种方法,都建议单独使用一个分区来存放本书所涉及的源码、编译结果,这可以避免当系统出错、系统重装时破坏学习成果。
从VMware的官方网站http://www.vmware.com下载到VMware工具,安装后,参照以下方法安装、设置Linux。
在VMware中建立一个虚拟机器,可以想象需要指定硬盘、内存、网络。在VMware中可以使用实际的硬盘,也可以使用文件来模拟硬盘。依照下面的一系列图形就可以建立了。
【注】笔者使用虚拟机软件是VMware Workstation 15.5,其他版本同理。关于VMware Workstation的安装笔者就不详述了,网上资料很多,自行查找吧。
2.2.2 VMware上安装Ubuntu16.04教程
Ubuntu安装镜像版本号:ubuntu-16.04.6-desktop-amd64
ubuntu下载地址:http://releases.ubuntu.com/16.04/
【注】下载源有很多,自行查找吧。
首先我们要安装虚拟机,这里不多做介绍,假设大家电脑上都已经安装了虚拟机,这里以VMware 15.5中文版为安装介绍对象。首先打开虚拟机。
第一步:打开虚拟机
第二步:这里便来到了home页,点击打开“创建新的虚拟机”。
第三步:这里我选择“自定义”安装,当然你也可以选择“典型”,然后点击“下一步”。
第四步:来到兼容性页面,这里不用设置,直接按默认来就行,点击下一步。
第五步:这里来到了客户机操作系统选择页面,我在这里选择“安装光盘镜像文件”选项,在下框里选择镜像文件所在的位置,点击“下一步”。
第六步:简易安装信息界面,这里补充完整信息点击“下一步”。
【注意】这个地方已经设置了登录用的用户名密码,所以好多人在安装完成之后不知道登录的用户名密码是什么,就是这个地方填的。
第七步:命名虚拟机页面,我们选择虚拟机的名字,并选择虚拟机要安装的位置,尽量选择比较空闲的盘符,点击下一步。
第八步:这里根据你的电脑配置定吧,点击“下一步”。
第九步:这里选择虚拟机内存的大小,我按这里的推荐设置来,你也可以按照上面所说的规则来自己调整,点击“下一步”。
第十步:这里我直接选择桥接网络(这样网速会快些),当然待会在虚拟机里也可以改动的。
第十一步:接下来我们直接按推荐设置来就可以了,一路点击“下一步”,直到“完成”。
第十二步:磁盘空间大小建议是20g以上,笔者这里选择了50g,设置好后点击下一步;
单击【下一步】后,再单击【完成】。
第十三步:等待安装完成即可。
2.2.3主机Linux操作系统上网络服务的配置与启动
配置Linux,启动ftp、ssh这2个服务。如果不是通过远程登录Linux,而是直接在Linux中进行开发,则ftp、ssh这两个服务不用开启。
(1)准备使用软件维护工具apt-get。
Ubuntu16.04中没有安装ftp、ssh、nfs服务器软件,它提供了一个很方便的安装、升级、维护软件的工具:apt-get。apt-get从光盘、网络上下载程序,并安装。所以要使用apt-get,通常要保证Linux能上网。
第一次使用apt-get来安装程序之前,要先完成以下两件事:
①修改/etc/apt/sources.list,将其中注释掉的网址打开在安装Ubuntu12.04的时候,如果网络无法使用,它会自动将/etc/apt/sources.list中各项注释掉。比如需要将以下两行开头的“#”号去掉:
deb http://cn.archive.ubuntu.com/ubuntu/gutsymainrestricted
deb-src http://cn.archive.ubuntu.com/ubuntu/gutsymainrestricted
……
注意:由于/etc/apt/sources.list属于root用户,而Ubuntu12.04中屏蔽了root用户的使用,要修改它,需要使用sudo命令。比如可以使用“sudo vi/etc/apt/sources.list”来修改它,或者使用“sudo gedit&”命令启动图形化的文本编辑器,再打开、编辑它。
②更新可用的程序列表
执行如下命令即可,它只是更新内部的数据库以确定:有哪些程序已经安装、哪些没有安装、哪些有新版本。apt-get程序将使用这个数据库来确定怎样安装用户指定的程序,并找到和安装它所依赖的其他程序。下面的指令。
$sudo apt-get update
(2)安装、配置、启动服务。
首先说明,Ubuntu7.10中隐藏了root用户,就是说不能使用root用户登录,这可以避免不小心使用root权限而导致系统崩溃。当需要使用root权限时,使用“sudo”命令,比如要修改/etc/exports文件时,修改如下所示:
$sudo vi /etc/exports
现在可以使用apt-get来安装软件了,以下的安装、配置、启动方法在Ubuntu7.10自带的帮助文档中都有说明。
A.安装、配置、启动ftp服务。
执行以下命令安装,安装后即会自动运行:
$sudo apt-get install vsftpd
修改vsftpd的配置文件/etc/vsftpd.conf,将下面几行前面的“#”号去掉。
#local_enable=YES
#write_enable=YES
上面第一行表示是否允许本地用户登录,第二行表示是否允许上传文件。
修改完华之后,执行以下命令重启ftp服务:
$sudo /etc/init.d/vsftpd restart
B.安装、配置、启动ssh服务。
执行以下命令安装,安装后即会自动运行:
$sudo apt-get install open ssh-server
它的配置文件为/etc/ssh/sshd_config,使用默认配置即可。
2.2.4 Ubuntu和Windows互传文件
1)虚拟机->设置->共享文件夹
2)选择【下一步】,然后选择共享文件夹路径
再点击【下一步】->【完成】就可。
3)进行软链接
进入虚拟机,进入home目录,输入命令:
$ln -s /mnt/hgfs/share
好了,现在Ubuntu和Windows就能互传文件了。
2.2.5修改Linux的计算机名
1)修改/etc/hostname
$sudo vim /etc/hostname
将文件中的内容改为自己想设置的名字。
2) sudo vim /etc/hosts
将文件中127.0.1.1后面内容改为自己刚才设置的名字。
重启生效!